#include "ModuleApplyCLUT.h"

void ModuleApplyCLUT::init(QCVModuleHandlerInterface * parent)
{
	this->parent=parent;
	parent->setAutoProcess(false);
	win=new QWidget();
  layout=new QVBoxLayout(win);
}
////////////////////////////////////////////////////////////////////////////////
void ModuleApplyCLUT::free()
{
	delete win;
}
////////////////////////////////////////////////////////////////////////////////
cv::Mat & ModuleApplyCLUT::process()
{
	std::cout<<"Erreur ModuleApplyCLUT : process ne doit pas etre executée\n";
}
////////////////////////////////////////////////////////////////////////////////
void ModuleApplyCLUT::setInput(int n,const cv::Mat & m)
{
	if(n==0)
	{	
		image=m.clone();
		if(!clut.empty() && !image.empty())
		{
			RGB_2_C11(image,clut,imageOut);
			parent->forceOutput(imageOut);
		}
	}
	else if(n==1)
	{	
		clut=m.clone();
	}
}
////////////////////////////////////////////////////////////////////////////////
QWidget* ModuleApplyCLUT::widget()
{
	return win;
}
////////////////////////////////////////////////////////////////////////////////
QString ModuleApplyCLUT::getName()
{
	return tr("Appliquer CLUT");
}
////////////////////////////////////////////////////////////////////////////////
int ModuleApplyCLUT::nbInputs()
{
	return 2;
}
////////////////////////////////////////////////////////////////////////////////
bool ModuleApplyCLUT::setParams(QString params)
{
	QStringList list_params=params.split(";");
		
	if(list_params.size()==1)
	{
		return true;
	}
	else
	{
		return false;
	}	
}
////////////////////////////////////////////////////////////////////////////////
QString ModuleApplyCLUT::getParams()
{
	return tr("no_param");
}

QCVModuleInterface * ModuleApplyCLUT::clone()
{
	return new ModuleApplyCLUT;
}

////////////////////////////////////////////////////////////////////////////////
QString ModuleApplyCLUT::help(int id)
{
	if(id==-2)
	{
		return tr("Permet d'appliquer une CLUT sur une image");
	}
	else if(id==-1)
	{
		return tr("image");
	}
	else if(id==0)
	{
		return tr("image");
	}
	else if(id==1)
	{
		return tr("clut");
	}
	else
	{
		return tr("erreur");
	}
}
////////////////////////////////////////////////////////////////////////////////
Q_EXPORT_PLUGIN2(ModuleApplyCLUT_plugin,ModuleApplyCLUT);  
